package cn.birdbaby.plugins.annotator;

import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiAnnotationMemberValue;
import com.intellij.psi.PsiElement;

import java.util.Map;

/**
 * @author llorando 8/8/24 11:53 am
 * 这个类树上面的定义的Abstract类太多了
 * 在加注解的过程中，存在两个角色，一个是加注解的角色(annotator)，另一个是管理者(manager)，组织annotator往一个/一组[class/field/method]上完成一个/一组注解的添加
 * 一个文件，也可以看做一个数量只有1个元素的文件组，针对一个/一组文件的操作，都可以在list.foreach下进行
 * [class/field/method]组的待处理元素搜集、批处理
 * 注解组的待添加元素搜集、构建、批处理
 */
public interface IAnnotator {
    String getSimpleName();
    String getFullName();
    //获取要添加的注解内容
    Map<String, PsiAnnotationMemberValue> buildAnnotationContent(Context context);
    //获取注解添加的位置[class/field/method]

    PsiAnnotation buildPsiAnnotation(Context context);

    public boolean support(PsiElement psiElement);
}
